package com.atguigu.guli.service.base.exception;

        import com.atguigu.guli.service.base.result.R;
        import com.atguigu.guli.service.base.result.ResultCodeEnum;
        import lombok.extern.slf4j.Slf4j;
        import org.apache.commons.lang3.exception.ExceptionUtils;
        import org.springframework.jdbc.BadSqlGrammarException;
        import org.springframework.web.bind.annotation.ExceptionHandler;
        import org.springframework.web.bind.annotation.ResponseBody;
        import org.springframework.web.bind.annotation.RestControllerAdvice;

        import java.sql.SQLSyntaxErrorException;
@Slf4j
@RestControllerAdvice //对所有的接口进行异常处理，如果发生了异常由当前类对象负责处理，处理的结果转为json响应
public class GlobaleExceptionHandler {
    @ExceptionHandler(value = Exception.class)//定义一个异常处理器，处理指定类型的异常
    public R exception(Exception e){//形参类型必须和 处理的异常类型一样
        System.out.println(ExceptionUtils.getStackTrace(e));
        return R.error();
    }

    @ExceptionHandler(BadSqlGrammarException.class)
    @ResponseBody
    public R error(BadSqlGrammarException e){
//        e.printStackTrace();
        log.error(e.getMessage());
//        log.error(ExceptionUtils.getStackTrace(e));
        return R.setResult(ResultCodeEnum.BAD_SQL_GRAMMAR);
    }
}
